package com.mdata.model.dto.wechat.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * 参数说明：
 * 参数 	必须 	说明
 * access_token 	是 	调用接口凭证
 * userid 	是 	成员UserID。对应管理端的帐号，企业内必须唯一。不区分大小写，长度为1~64个字节
 * name 	否 	成员名称。长度为1~64个utf8字符
 * alias 	否 	别名。长度为1-64个utf8字符
 * mobile 	否 	手机号码。企业内必须唯一。若成员已激活企业微信，则需成员自行修改（此情况下该参数被忽略，但不会报错）
 * department 	否 	成员所属部门id列表，不超过100个
 * order 	否 	部门内的排序值，默认为0。当有传入department时有效。数量必须和department一致，数值越大排序越前面。有效的值范围是[0, 2^32)
 * position 	否 	职务信息。长度为0~128个字符
 * gender 	否 	性别。1表示男性，2表示女性
 * email 	否 	邮箱。长度不超过64个字节，且为有效的email格式。企业内必须唯一。若是绑定了腾讯企业邮箱的企业微信，则需要在腾讯企业邮箱中修改邮箱（此情况下该参数被忽略，但不会报错）
 * telephone 	否 	座机。由1-32位的纯数字、“-”、“+”或“,”组成
 * is_leader_in_dept 	否 	部门负责人字段，个数必须和department一致，表示在所在的部门内是否为负责人。
 * direct_leader 	否 	直属上级，可以设置企业范围内成员为直属上级，最多设置5个
 * avatar_mediaid 	否 	成员头像的mediaid，通过素材管理接口上传图片获得的mediaid
 * enable 	否 	启用/禁用成员。1表示启用成员，0表示禁用成员
 * extattr 	否 	自定义字段。自定义字段需要先在WEB管理端添加，见扩展属性添加方法，否则忽略未知属性的赋值。
 * extattr.type 	是 	属性类型: 0-文本 1-网页 2-小程序
 * extattr.name 	是 	属性名称： 需要先确保在管理端有创建该属性，否则会忽略
 * extattr.text 	否 	文本类型的属性
 * extattr.text.value 	是 	文本属性内容,长度限制64个UTF8字符
 * extattr.web 	否 	网页类型的属性，url和title字段要么同时为空表示清除该属性，要么同时不为空
 * extattr.web.url 	是 	网页的url,必须包含http或者https头
 * extattr.web.title 	是 	网页的展示标题,长度限制12个UTF8字符
 * external_profile 	否 	成员对外属性，字段详情见对外属性
 * external_position 	否 	对外职务，如果设置了该值，则以此作为对外展示的职务，否则以position来展示。不超过12个汉字
 * nickname 	否 	视频号名字（设置后，成员将对外展示该视频号）。须从企业绑定到企业微信的视频号中选择，可在“我的企业”页中查看绑定的视频号
 * address 	否 	地址。长度最大128个字符
 * main_department 	否 	主部门
 *
 *     特别地，如果userid由系统自动生成，则仅允许修改一次。新值可由new_userid字段指定。
 *
 *     注意，2021年9月26日后，由企业邮箱侧创建的新企业，为邮箱灰度企业（通讯录全员都有『企业邮箱』，具有统一的域名后缀），更新email字段有如下行为：（1）新用户未激活时，email字段表示用户激活用邮箱，可以修改；（2）用户激活后，请求中的email字段表示更新『企业邮箱』（后缀为该企业的『企业邮箱』后缀），若用户『企业邮箱』可以修改且请求中的email字段为合规的『企业邮箱』（可修改状态：创建时自动生成的『企业邮箱』，则仅允许修改一次，若创建时填入了合规的『企业邮箱』，则无法修改），则会修改该用户的『企业邮箱』。（特别地，如果用户激活前修改请求填入了合法的『企业邮箱』且用户『企业邮箱』可以修改，激活用邮箱和『企业邮箱』会一并修改）
 *
 * 权限说明：
 *
 * 仅通讯录同步助手或第三方通讯录应用可调用。
 */
@Data
public class UserDepartmentUpdateDTO {

    @JsonProperty(value = "userid")
    private String userId;

    @JsonProperty(value = "department")
    private int[] department;
}
